Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem "walka" sztuczny system.


Rekomendowane odpowiedzi

Opublikowano

Siemka, mam problem, a mianowicie nie wiem jak zrobic, aby gdy gracz przegra (0 hp) to skonczy sie walka tylko ze stratą COINS a gdy wygra z psem dostanie.

 

Chodzi mi tu o while..

Co tu jest zle?

Urywek z kodu:

 

	  if (PolujNa == "1")
	  if (lvl == 1)
	  {
          mobhp = 50;
		  do
		  {
		  do
		  {
		  int piesdmg = monsterdmg(10); // wczesniej jest funckja z rand;)
		  int dmgyou = youdmg(20);
		  hp -= piesdmg;
		  mobhp -= dmgyou;
		  
	      std::cout << "Atakujesz psy!" << std::endl;
		  std::cout << "Twoje zycie to: " << hp << std::endl;
	      std::cout << "Zycie psa to: " << mobhp;
		  std::cout << "wpisz /atakuj aby kontynuowac\n:";
		  std::cin >> wprowadzona;
		  
		  }while(mobhp >= 0);
		  }while(hp >=0);
		  int exprandom = randomexp(10);
		  int moneyrandom = randommoney(11);
		  std::cout << "Zdobywasz " << exprandom << "% expa!" << std::endl;
		  std::cout << "Zdobywasz " << moneyrandom << " coins!" << std::endl;
		  procent += exprandom;
		  money += moneyrandom;
          lvlup(30);
		  komenda();
	  }
	  else
	  {
		  std::cout << "Niestety, masz zbyt duzy poziom, pies sie bal i zwial ;)" << std::endl;
		  komenda();
	  }
	} // Przypuszczam ze to cos z tym ze konczy sie petla gdy masz 0 hp i mob ma 0 hp ale nwm co na to poradzic

Moje tutki:

"Bad Video Card Drivers" - Błąd w mc? Zobacz do mnie aby dowiedzieć się jak to naprawić!

Chcesz wyciągnąć maksymalną ilość fps w minecraft? Kliknij

tu!

Opublikowano

Zrobiłeś dwie zagnieżdżone pętle. Rozumiem, że pętla ma się skończyć wtedy, gdy ktoś padnie. Bardziej precyzyjnie mówiąc, gdy ty padniesz, albo mob padnie.

Lepiej to zrobić w jednej pętli, bo ta się wykona dopóki hp >= 0 (twoje hp jest większe lub równe zero).

Znasz może operatory takie jak || albo &&? Warto się dowiedzieć. A co do tego, kto wygra, to powinieneś to uwzględnić po pętli. Wydaje mi się, że najlepszym rozwiązaniem będzie sprawdzenie, kto ma hp mniejsze od zera.

 

A już całkiem nawiasem mówiąc, to zakładam, że chciałeś by postać umierała po osiągnięciu 0hp. Bo w obecnej pętli postać nadal "żyje" mając 0 hp (pętla dalej będzie się wykonywać).


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

Zrobiłeś dwie zagnieżdżone pętle. Rozumiem, że pętla ma się skończyć wtedy, gdy ktoś padnie. Bardziej, gdy ty padniesz, albo mob padnie.

Lepiej to zrobić w jednej pętli, bo ta się wykona dopóki hp >= 0 (twoje hp jest większe lub równe zero).

Znasz może operatory takie jak || albo &&? Warto się dowiedzieć. A co do tego, kto wygra, to powinieneś to uwzględnić po pętli. Wydaje mi się, że najlepszym rozwiązaniem będzie sprawdzenie, kto ma hp mniejsze od zera.

 

A już całkiem nawiasem mówiąc, to zakładam, że chciałeś by postać umierała po osiągnięciu 0hp. Bo w obecnej pętli postać nadal "żyje" mając 0 hp.

Nie umarła, to jest szkielet kodu, po prostu straci coinsy;)

Nie znam || ani && moglbys mi wyjasnic?

Pomoglbys mi z tym kodem?

Moje tutki:

"Bad Video Card Drivers" - Błąd w mc? Zobacz do mnie aby dowiedzieć się jak to naprawić!

Chcesz wyciągnąć maksymalną ilość fps w minecraft? Kliknij

tu!

Opublikowano

 

http://cpp0x.pl/kursy/Kurs-C++/Poziom-1/Operacje-logiczne/15

 

 

Mam nadzieję, że tam jest dostatecznie jasno opisane :).

Zrobilem cos takiego i nadal nie dziala :X

 

		  do
		  {
		  int piesdmg = monsterdmg(10);
		  int dmgyou = youdmg(20);
		  hp -= piesdmg;
		  mobhp -= dmgyou;
		  
	      std::cout << "Atakujesz psy!" << std::endl;
		  std::cout << "Twoje zycie to: " << hp << std::endl;
	      std::cout << "Zycie psa to: " << mobhp;
		  std::cout << "wpisz /atakuj aby kontynuowac\n:";
		  std::cin >> wprowadzona;
		  
		  }while(mobhp >= 0 || hp >= 0);

Moje tutki:

"Bad Video Card Drivers" - Błąd w mc? Zobacz do mnie aby dowiedzieć się jak to naprawić!

Chcesz wyciągnąć maksymalną ilość fps w minecraft? Kliknij

tu!

Pomocnik
Opublikowano

 

Zrobilem cos takiego i nadal nie dziala :X

 

		  do
		  {
		  int piesdmg = monsterdmg(10); //przypisanie zmiennej wartości z tablicy
		  int dmgyou = youdmg(20); //przypisanie zmiennej wartości z tablicy
		  hp -= piesdmg; //aktualizacja hp gracza poprzez odjęcie ataku psa
		  mobhp -= dmgyou; //aktualizacja hp psa odejmujesz od jego hp 
		  
	      std::cout << "Atakujesz psy!" << std::endl; //wyskakuje komunikat o tym że atakujesz psy
		  std::cout << "Twoje zycie to: " << hp << std::endl; //wyświetla aktualne hp gracza
	      std::cout << "Zycie psa to: " << mobhp;  //wyświetla życie psa który zostałzaatakowany
		  std::cout << "wpisz /atakuj aby kontynuowac\n:"; //wyświetla prośbę o podanie komendy
		  std::cin >> wprowadzona; // zapisuje wprowadzoną wartosć w zmiennej "wprowadzona"
		  
		  }while(mobhp >= 0 || hp >= 0); //sprawdza warunek który brzmi 
// kontynuuj jeśli hp psa jest większe od zera lub hp gracza jest większe od zera ???

 

Teraz parę dobrych rad :)

-Staraj się nie nazywać zmiennych po polsku

-Staraj się używać jak najmniej pętli (twój pierwszy post)i nie deklarować zmiennych w pętlach

- Nie potrzebnie przy każdym powtórzeniu pętli przypisujesz te same wartości, lepiej zrobić to przed pętlą :

int piesdmg = monsterdmg(10);

int dmgyou = youdmg(20);

 

Powodzenia :)

edit:

Bym zapomniał, nie sprawdzasz wartości zmiennej "wprowadzona" przez co pobierasz ją jakby bez sensu, co kolwiek ktoś wpisze atak będzie kontynuowany :)

Opublikowano

-Staraj się nie nazywać zmiennych po polsku

- Nie potrzebnie przy każdym powtórzeniu pętli przypisujesz te same wartości, lepiej zrobić to przed pętlą :

 

Powodzenia :)

 

Co złego jest w nazywaniu zmiennych po polsku? Jeśli nie posiadają jakichś polskich znaków to wszystko jest w porządku. Wszystko zależy od wygody programisty, bo nazwy zmiennych nie mają praktycznie żadnego znaczenia przy gotowym programie.

 

To nie są te same wartości. Założę się, że to funkcja losująca, która zmienia wartość co cykl pętli.


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Pomocnik
Opublikowano

Co złego jest w nazywaniu zmiennych po polsku? Jeśli nie posiadają jakichś polskich znaków to wszystko jest w porządku. Wszystko zależy od wygody programisty, bo nazwy zmiennych nie mają praktycznie żadnego znaczenia przy gotowym programie.

 

To nie są te same wartości. Założę się, że to funkcja losująca, która zmienia wartość co cykl pętli.

Jeśli kiedyś będzie pracował z kimś z innego kraju lepiej będzie jak inni zrozumieją jego kod no nie? poprostu lepiej się nie przywiązywać do polskich zmiennych takie jest moje zdanie. Masz rację prawdopodobnie są to funkcje losujące, zapomniałem że tablice w C są w nawiasach kwadratowych, nie programuję w c już od wielu lat :).

Opublikowano

To jest c++, ale spoko... :)

 

Co do używania zmiennych w języku bardziej uniwersalnym (czyt. Angielskim) przekonywałby mnie bardziej argument, że biblioteka bądź kod źródłowy zostanie gdzieś udostępniony, a to zmienia postać rzeczy. Jak zacznie współpracować z kimś z zagranicy, wtedy będzie się martwić o nazewnictwo zmiennych :).


Pomagam w projektach dotyczących programowania (C++/C/Java/C#/inne). Jak masz jakiś problem, napisz do mnie, wspólnie poszukamy rozwiązania ;).

Opublikowano

- Nie potrzebnie przy każdym powtórzeniu pętli przypisujesz te same wartości, lepiej zrobić to przed pętlą :

int piesdmg = monsterdmg(10);

 

int dmgyou = youdmg(20);

a co jeśli monsterdmg/youdmg jest losowane, albo zależne od aktualnej sytuacji?

 

i nie deklarować zmiennych w pętlach

najlepiej wszystko walnąć globalnie!

 

Jeśli kiedyś będzie pracował z kimś z innego kraju lepiej będzie jak inni zrozumieją jego kod no nie?

jak będzie pracował kiedyś z kimś bla bla bla, pierdolenie. Na razie nie pracuje i może sobie nazywać jak chce. To nie jest wymóg

 

zapomniałem że tablice w C są w nawiasach kwadratowych

Trzeba się nieźle wysilić, żeby takiej rzeczy zapomnieć

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...